package stu.day39_day.day40;

import java.util.Arrays;

public class hw6 {


    public int maxUncrossedLines(int[] nums1, int[] nums2) {

       String s1 = Arrays.toString(nums1);
       String s2 = Arrays.toString(nums2);
       return longestCommonSubsequence(s1,s2);

     }


    public int longestCommonSubsequence(String text1, String text2) {
        int m = text1.length();
        int n = text2.length();

        int[][] dp = new int[m][n];

        for(int i=0;i<m;i++){
            if(text1.charAt(i)==text2.charAt(0)){
                dp[i][0]=1;
            }
            if(i>0&&dp[i-1][0]==1){
                dp[i][0]=1;
            }
        }
        for(int i=0;i<n;i++){
            if(text1.charAt(0)==text2.charAt(i)){
                dp[0][i]=1;
            }
            if(i>0&&dp[0][i-1]==1){
                dp[0][i]=1;
            }
        }

        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                if(text1.charAt(i)==text2.charAt(j)){
                    dp[i][j] = dp[i-1][j-1]+1;
                }
                dp[i][j] = Math.max(dp[i][j],dp[i-1][j]);
                dp[i][j] = Math.max(dp[i][j],dp[i][j-1]);
            }
        }
        int max = 0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                max = Math.max(max,dp[i][j]);
            }
        }

        return max;

    }
}
